package com.qdsg.ysg.doctor.util;

import android.content.Context;
import android.text.TextUtils;
import android.widget.Toast;

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by HP on 2018/8/27.
 */

public class MatchUtil {


    public static boolean checkIDCard(String num, Context context) {
        char[] id = {};
        for (int i = 0; i < num.length(); i++) {
            id = Arrays.copyOf(id, id.length + 1);
            id[id.length - 1] = num.charAt(i);
        }
        boolean IsFormRight = verForm(num);
        if (IsFormRight) {
            boolean IsCorrect = verify(id);
            if (IsCorrect) {
                return true;
            } else {
                Toast.makeText(context, "身份证输入有误", Toast.LENGTH_SHORT).show();
                return false;
            }
        } else {
            return false;
        }
    }


    public static boolean verForm(String num) {
        String reg = "^\\d{15}$|^\\d{17}[0-9Xx]$";
        if (!num.matches(reg)) {
            return false;
        }
        return true;
    }

    public static boolean verify(char[] id) {
        int sum = 0;
        int w[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
        char[] ch = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
        for (int i = 0; i < id.length - 1; i++) {
            sum += (id[i] - '0') * w[i];
        }
        int c = sum % 11;
        char code = ch[c];
        char last = id[id.length - 1];
        last = last == 'x' ? 'X' : last;
        return last == code;
    }

    /**
     * 验证密码长度是否为6-10 且只能包含字母、数字、下划线
     *
     * @param str
     * @return
     */
    public static boolean verifyPassword(String str) {
//        Pattern pattern = Pattern.compile("/^\\w{6,10}$/");
        Pattern pattern = Pattern.compile("^[a-zA-Z0-9_]{6,10}+$");
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }

    /**
     * 验证手机号
     *
     * @param mobiles
     * @return
     */
    public static boolean isMobileNo(String mobiles) {
        /*
         * 移动号码段:139、138、137、136、135、134、150、151、152、157、158、159、182、183、184、187、188、147
         * 联通号码段:130、131、132、185、186、145、171/176/175
         * 电信号码段:133、153、180、181、189、173、177
         */
        String telRegex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17([1-3]|[5-9]))|(18[0-9]))\\d{8}$";
        /**
         * (13[0-9])代表13号段 130-139
         * (14[5|7])代表14号段 145、147
         * (15([0-3]|[5-9]))代表15号段 150-153 155-159
         * (17([1-3][5-8]))代表17号段 171-173 175-179 虚拟运营商170屏蔽
         * (18[0-9]))代表18号段 180-189
         * d{8}代表后面可以是0-9的数字，有8位
         */
        if (TextUtils.isEmpty(mobiles)) {
            return false;
        } else {
            return mobiles.matches(telRegex);
        }
    }
}
